/**
 *Declaração dos Cabeçalho dos metodos  utilizados 
 */

//includes
#include "stdafx.h"

//definees
#define MAX_VALUE 80
#define MAX_NAME 20
#define MAX_SALA 15
 
 
 //struct com estatisticas do jogo
struct StatisticaJogo{
//as variaveis com estatisticas do jogo
    int nJogo;        //nJogo - numeros de jogos iniciados
    int nVitoria;    //nVitoria - numero de luta ganhas ao Monstro
    int nDerrota;    //nDerrota - numero de derrotas sofridas pelo jogador    
    int objetivo;    //objetivo - jogadas completas com morte do monstro + tesouro encontrado + retorno ao ponto de inicial
};
 
//struct com dados do jogador
struct Jogador{
    //criacao do jogador e as caracteristicas do mesmo
    int energia;
    int sala;
    int tesouro;
    char nome[MAX_NAME];
};
 
//o Mostro e alguns detalhes
struct Monstro{
    int energia;
    int posicao;
    char nome[MAX_NAME];
};
 
//definicao da base para os mapas
struct Sala{
    int norte;
    int oeste;
    int este;
    int sul;
    int tesouro;
    char descricao[MAX_VALUE];
};
 
//os metodos que vao ser inicializadas depois do main()
void InicializarJogador(struct Jogador *pJogador, bool superUser);
void ListarDJogador(struct Jogador *pJogador);
void InicializarMonstro(struct Monstro *pMonstro);
void ListarDMonstro(struct Monstro *pMonstro);
void InicializarMapa(struct Sala pMapa[]);
void ListarDMapas(struct Sala pMapa[]);
void ImprimirMapa();
//
// feito para o Recurso
char LerdoUtilizador();                                                //Leitura das entras de direcoes e visual. do mapa(a implementar)
bool FazerBoasVindas();
char ComecarOJogo();

int DescarregarDMapa();
int CarregarDMapaTXT(char *nomeFich, struct Sala mapa[]);
bool configparamCMD(int arg_nr, char *arg_lst[], char *nFicheiro);

int CarregarDMapa(FILE *fDMapa, struct Sala mapa[]);
void MovimentarJogador(char direc, struct Jogador *pJgdor);                    //fazer as verificações necessarias a movimentação do jogador
int MovimentarMonstro(struct Monstro *pMonstro, bool spUsers);
bool VerificarEncontro(struct Monstro * pMstro, struct Jogador *pJgdor);   //verificar se os adversarios encontram-se na mesma sala e avisar
void MostrarResultadoFinal(struct StatisticaJogo estatFinal);
void DescreverSalaActual(struct Sala *sActual);                        //fazer a descriçao das salas
void ListarDJogador(struct Jogador *pJogador);
void DefrontarMonstro(struct Jogador *pJgdor, struct Monstro *pNonstro, bool sUser);     //resp por tratar da luta entre os dois advers
void ProcurarTesouro(struct Jogador *pJgdor, struct Sala *sActual, struct Monstro *monstro1);
//

void ConfigPortas();
void IniciarJogo();
void ConfigurarJogo();
void InicializarLocal(struct Sala mapa[], int tamanho);
void MostrarDadosLugar(struct Sala mapa[], int tamanho);
void InicializarSala(struct Sala *pSala, int portas[], int pos);
